package cn.com.headfree.recordlog.controller;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.gta.edu.sdk.common.dto.Page;

import cn.com.headfree.base.controller.ExBaseController;
import cn.com.headfree.base.controller.ResultData;
import cn.com.headfree.entity.TRecordOptLog;
import cn.com.headfree.entity.isc.User;
import cn.com.headfree.recordlog.service.IRecordLogService;

/**
 * @Title  RecordLogController.java
 * @Package cn.com.headfree.recordlog.controller
 * @Description 业务记录操作日志信息controller
 * @author yangwang
 * @date  2020年7月3日 下午3:43:12
 */
@Controller
@RequestMapping(value = "/recordLog", produces = "application/json;charset=UTF-8")
public class RecordLogController extends ExBaseController {

	private static final Logger LOG = LogManager.getLogger(RecordLogController.class);

	@Autowired
	private IRecordLogService recordLogService;
	/**
	 * 配置环境
	 *  */
	@Value("${spring.profiles.active}")
	private String spring_profiles_active;

	/**
	 * 保存业务记录操作日志信息记录
	 * @param record
	 * @return ResultData
	 *  */
	@RequestMapping("/save")
    @ResponseBody
    public ResultData save(HttpServletRequest request,@RequestBody TRecordOptLog record) {
		ResultData result = new ResultData();
		try {
			if((null != record)&&(StringUtils.isNotBlank(record.getRecordId()))) {
				//获取用户登录信息
				User user = this.getLoginUserInfo(request);
				//测试数据--start
				if(StringUtils.equals(spring_profiles_active, "dev")) {
					user = new User();
					user.setId("F9D687B69020000EE0430A8A018B000E");
					user.setName("朱玉良");
					user.setUserName("402018");
					user.setBaseOrgId("A21258CA31F24DF7955491D3CE218255");
					user.setOrgAnisationName("营销业务系统");
					user.setFax("402018");
				}
		        //测试数据--end
				if((null != user)&&(StringUtils.isNotBlank(user.getId()))) {
					//保存业务记录操作日志信息记录
					recordLogService.save(user,record);
					LOG.info("保存业务记录操作信息成功");
				}else {
					result.setErrorMsg("获取用户登录信息失败");
		            result.setSuccess(false);
		            LOG.error("获取用户登录信息失败");
				}
			}else {
				result.setErrorMsg("保存业务记录操作信息失败-参数不可为空");
	            result.setSuccess(false);
	            LOG.error("保存业务记录操作信息失败-参数不可为空");
			}
        } catch (Exception e) {
            result.setErrorMsg("保存业务记录操作信息异常");
            result.setSuccess(false);
            LOG.error("保存业务记录操作信息异常", e);
        }
        return result;
	}

	/**
	 * 获取业务记录操作日志信息列表
	 * @param record
	 * @return ResultData
	 *  */
	@RequestMapping("/getList")
    @ResponseBody
    public ResultData getList(@RequestBody TRecordOptLog record) {
		ResultData result = new ResultData();
		try {
			if((null != record)&&(StringUtils.isNotBlank(record.getRecordId()))) {
				result.setData(recordLogService.getList(record));
				LOG.info("获取业务记录操作信息列表成功");
			}else {
				result.setErrorMsg("获取业务记录操作信息列表失败-参数不可为空");
	            result.setSuccess(false);
	            LOG.error("获取业务记录操作信息列表失败-参数不可为空");
			}
        } catch (Exception e) {
        	result.setErrorMsg("获取业务记录操作信息列表异常");
            result.setSuccess(false);
            LOG.error("获取业务记录操作信息列表异常", e);
        }
        return result;
	}

	/**
	 * 获取业务记录操作日志信息分页信息
	 * @param record
	 * @return ResultData
	 *  */
	@RequestMapping("/getPage")
    @ResponseBody
    public ResultData getPage(Page<TRecordOptLog> page,@RequestBody TRecordOptLog record) {
		ResultData result = new ResultData();
		try {
			if((null != record)&&(StringUtils.isNotBlank(record.getRecordId()))) {
				recordLogService.getPage(page, record);
				result.setData(page);
				LOG.info("获取业务记录操作信息分页成功");
			}else {
				result.setErrorMsg("获取业务记录操作信息分页失败-参数不可为空");
	            result.setSuccess(false);
	            LOG.error("获取业务记录操作信息分页失败-参数不可为空");
			}
        } catch (Exception e) {
        	result.setErrorMsg("获取业务记录操作信息分页异常");
            result.setSuccess(false);
            LOG.error("获取业务记录操作信息分页异常", e);
        }
        return result;
	}

}
